package Day21.ArrayMethodReference;

import java.util.Arrays;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day21.ArrayMethodReference
 * @Author:hyhWTX
 * @ClassName:Demo
 * @CreateTime:2022年-10月-30日 17:50
 * @Description: 数组的构造器引用
 */

public class Demo {
    //定义一个方法，方法参数传递创建的数组长度和ArrayBuilder接口
    //方法内部提供传递的长度使用ArrayBuilder中的方法创建数组并返回
    public static int[] createArray(int length, ArrayBuilder ab) {
        return ab.builderArray(length);
    }

    public static void main(String[] args) {
        //调用createArray方法，传递数组的长度和Lambda表达式
        int[] arr1 = createArray(10, (length) -> {
            //根据数组的长度，创建数组并返回
            return new int[length];
        });
        System.out.println(arr1.length);
        /*
         *  使用方法引用优化Lambda表达式一全创建的就是int[]数组
            数组的长度也是已知的就可以使用方法引用
            int[]引用news,根据参数传递的长度来创建数组
         */
        int[] arr2 = createArray(10,int[]::new);
        System.out.println(Arrays.toString(arr2));
        System.out.println(arr2.length);
    }

}
